import pandas as pd
import yaml
from yaml import SafeLoader
from datareport.api import ImageUtil
from datareport.api.DataSource import DataSource
from datareport.impl.paragraph.base.BaseParagraph import BaseParagraph
from datareport.api.annotation.Style import style


@style()
class KaiZhanQingKuang_zhuti_content_43(BaseParagraph):
    """
    组织生活开展主题分析-概括情况
    """

    def __init__(self):
        super().__init__()
        self.text = ''' 根 据 工 作 要 求 ， \
各 基 层 党 支 部 按 照 “ 规 定 动 作 + 自 选 动 作 " \
开 展 组 织 生 活 ， 不 断 夯 实 基 层 党 组 织 建 设 ，\
强 化 对 党 员 的 教 育 管 理 。 对 基 层 党 组 织 \
“ 三 会 一 课 " 开 展 主 题 进 行 分 析 ，\
本 年度 ， 组 织 生 活 主 题 分 布 情 况 如 图 所 示 。'''
        self.sort = 33
        self.section = 11

    def plot(self, df, plt):
        pass

    def getData(self, result):
        pass

    def start(self, conn, year, plt):
        self.text=self.text.replace(' ','').replace('\n','')
        df=pd.read_sql('''select p.topicLabel
        from t_meetingrecord p where year(createTime)={}
        '''.format(year),con=conn)
        topics=pd.read_sql('''select name,value from t_podict where type=\'topicLabel\'''',con=conn)
        names=topics['name'].values.tolist()
        counts=[0]*len(names)
        for ts in df['topicLabel'].values:
            vas=ts.split(',')
            for v in vas:
                if len(topics[topics['value']==v])>0:
                    name =topics.loc[topics['value']==v,'name'].values[0]
                    counts[names.index(name)]+=1
        self.image=ImageUtil.barh(names,counts,'专题分布')
        
if __name__ == '__main__':
    with open('D:\work\sanhuiyike\datareport\config.yaml', encoding='utf-8') as f:
        data = yaml.load(f, Loader=SafeLoader)
    con=DataSource(data['datasource']).conn
    KaiZhanQingKuang_zhuti_content().start(con,2023,'')
